package com.erp.erp_servers.Billing;

import com.erp.erp_entitys.Billing.entity.BillingDetailEntity;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @author zjk
 * @version 1.0
 * @description
 * @date 2021/1/16/016 23:05
 */
public interface BillingDetailService {
    /**
     * 根据id删除
     * @param ids
     * @return
     */
    Integer delete(List<Integer> ids);
    /**
     * 添加开票明细
     * @param billingDetailEntity
     * @return
     */
    Integer insertBillingDetailEntity(BillingDetailEntity billingDetailEntity);
    /**
     * 根据开票id查询开票明细集合
     * @param billingId
     * @return
     */
    List<BillingDetailEntity> selectByBillingDetailBillingId(Integer billingId);
    /**
     *根据开票明细id集合修改状态
     *
     * @param valid
     * @param ids
     * @return
     */
    Integer updateBillingDetailInvalid(Integer valid, List<Integer> ids);
    /**
     *根据开票主表id修改状态
     *
     * @param valid
     * @param ids
     * @return
     */
    Integer updateBillingDetailInvalidByBillingId(Integer valid,Integer[] ids);

    /**
     * 修改开票明细
     * @param record
     * @return
     */
    int updateByBillingDetail(BillingDetailEntity billingDetail);
    /**
     * 根据开票主ID查询开票明细
     * @param id
     * @return
     */
    List<BillingDetailEntity> selectByBillingId(Integer billingId);

    /**
     * 根据条件查询已开票的采购的开票明细
     * @param exportContractNo 外销合同号
     * @param purchaseOrderCode 采购单号
     * @param productCode 产品编码
     * @param sourceType 单据类型 1:供应商票, 2:客户票
     * @param invoiceType 开票单据来源（1导入报关，2导入采购，3导入外销，4导入结汇，5导入出运明细）
     * @return
     */
    Integer findBillingDetailByParam(Integer sourceType,Integer invoiceType,String exportContractNo,String purchaseOrderCode,String productCode);

    /**
     * 根据条件查询开票明细--结汇
     * @return
     */
    Integer findBillingDetailByParamBillExchange(String contractNo,String invoiceNo,String productCode);
}
